//
// Created by root on 2019/11/8.
//
#include "CountDownLatch.h"

using namespace tank;

CountDownLatch::CountDownLatch(int count):mutex_(),condition_(mutex_),count_(count) {
}
void CountDownLatch::wait() {
    MutexLockGuard lock(mutex_);
    while(count_>0)
        condition_.wait();
}
void CountDownLatch::countDown() {
    MutexLockGuard lock(mutex_);
    --count_;
    if(count_==0)
        condition_.notifyAll();
}
int CountDownLatch::getCount() const {
    MutexLockGuard lock(mutex_);
    return count_;
}